Virtual desktop infrastructure (VDI) refers to a system that uses remote desktop protocols (hereinafter referred to as “remoting protocols”) that allow a user's client device to connect to a remote desktop. The term, “remote desktop” refers to an instance of a user computer system or virtual machine that runs remotely to the user, e.g., in a remote datacenter. The term, “remote desktop” may also be used to refer to the user interface presented to a user The remote desktop is running on a host, which receives commands from the client device and updates an image of a display of the remote desktop to the client device (referred to as “display remoting”) based on the commands. Updates of the image of the remote desktop on the user's client device should be in real-time based on the input received from the client device and the activity of the operating system and the applications running on the remote desktop.
Due to the real-time nature of display remoting, remoting protocols need to deliver a good user experience even in the presence of hostile network environments. When the remote desktop and the client device are connected by a high-speed local area network (LAN) where an abundance of bandwidth is available, low round-trip latencies exist with close to zero packet loss. In this environment, the remoting protocols deliver a high-quality user experience. However, users may not always connect in an ideal environment. For example, users are more frequently connecting to remote desktops over high latency, high loss wide area networks (WANs) via mobile and/or distributed environments. In one example, users may connect from remote branch offices to remote desktops housed in a central data center or cloud, or users may connect via wireless networks (e.g., WiFi), that are often public networks, which may be congested. These environments result in network conditions that include high rates of packet loss and high latency, which may not be conducive to delivering a high-quality user experience.
Prior generation remoting protocols used Transmission Control Protocol (TCP) to handle transport of image blocks to update an image of the desktop graphical user interface (GUI) on the client device. TCP is a reliable protocol that handled the reliable transport of the image blocks to the client device. However, more recent remoting protocols use other network protocols, such as User Datagram Protocol (UDP), that are not reliable. In this case, the remoting protocol is responsible to ensure reliable transport of the image blocks.
In one example, a series of packets may carry image blocks for an update of an image of the desktop GUI generated by the remote desktop. In the course of sending the packets from the host to the client device, some packets may be lost resulting in the client device not having complete set of image blocks for the update. Even though remoting protocols leverage UDP, the remoting protocols typically re-transmit each and every lost data packet. As a result, when packet loss occurs, the remoting protocol prevents the client device from rendering an update to the image of the desktop GUI until resolving the lost packet problem. For example, the client device typically waits some period to determine if the packet is delayed, determines the packet is lost, notifies the remote desktop of the lost packet, and then waits for the remote desktop to resend the lost packet.
In low latency networks, the remote desktop can send lost packets promptly, and the user experience is most likely not adversely affected. However, in high latency networks, the time taken to resolve the lost packet problem may affect the user experience as the client device delays the update until the problem is resolved. This impacts the maximum rate that the client device can deliver to update images of the desktop GUI, which impacts user experience, such as causing video rendering, scroll operations, window drag operations to look slow and jumpy.